#ifndef HASIO_BASIC_SOCKET_ACCEPTOR_HPP
#define HASIO_BASIC_SOCKET_ACCEPTOR_HPP

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)

#include "detail/io_object_impl.hpp"
#include "detail/reactive_socket_service.hpp"

namespace hasio {

template <typename Protocol>
class basic_socket_acceptor
{
public:
    using protocol_type = Protocol;
    using endpoint_type = typename Protocol::endpoint;

    basic_socket_acceptor() = default;

    template <typename ExecutionContext>
    basic_socket_acceptor(ExecutionContext &context,
        const endpoint_type &endpoint)
        : impl_(context)
    {
        hasio::error_code ec;
        const protocol_type protocol = endpoint.protocol();
    }

    void accept()
    {
        //impl_.get_service().accept();
    }
private:
    hasio::detail::io_object_impl<
        hasio::detail::reactive_socket_service<Protocol>> impl_;
};

}

#endif // HASIO_BASIC_SOCKET_ACCEPTOR_HPP 